文章目录
  1. 1. 一、maven依赖
  2. 2. 二、设置配置文件相应类目的前缀
  3. 3. 三、编写AutoConfigure类
  4. 4. 四、在resources/META-INF/下创建spring.factories文件
  5. 5. 五、原理
  6. 6. 六、鸣谢

一、maven依赖

1
2
3
4
5
6
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
</dependencies>

二、设置配置文件相应类目的前缀

1
2
3
4
5
@ConfigurationProperties("example.service")
public class ExampleServiceProperties {
private String prefix;
private String suffix;
//省略 getter setter

三、编写AutoConfigure类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
@Configuration
//当classpath下发现该类的情况下进行自动配置
@ConditionalOnClass(ExampleService.class)
@EnableConfigurationProperties(ExampleServiceProperties.class)
public class ExampleAutoConfigure {
@Autowired
private ExampleServiceProperties properties;
@Bean
//当Spring Context中不存在该Bean时
@ConditionalOnMissingBean
//当配置文件中example.service.enabled=true时
@ConditionalOnProperty(prefix = "example.service",value = "enabled",havingValue = "true")
ExampleService exampleService (){
return new ExampleService(properties.getPrefix(),properties.getSuffix());
}
}

四、在resources/META-INF/下创建spring.factories文件

1
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.example.autocinfigure.ExampleAutoConfigure

五、原理

  1. Spring Boot在启动时扫描项目所依赖的JAR包,寻找包含spring.factories文件的JAR包
  2. 根据spring.factories配置加载AutoConfigure类
  3. 根据 @Conditional注解的条件,进行自动配置并将Bean注入Spring Context

六、鸣谢

http://www.jianshu.com/p/45538b44e04e

文章目录
  1. 1. 一、maven依赖
  2. 2. 二、设置配置文件相应类目的前缀
  3. 3. 三、编写AutoConfigure类
  4. 4. 四、在resources/META-INF/下创建spring.factories文件
  5. 5. 五、原理
  6. 6. 六、鸣谢